Including two signatures, both with a 'type t' [Standard ML]

Posted by Andy Morris on Stack Overflow See other posts from Stack Overflow or by Andy Morris
Published on 2010-06-06T00:17:08Z Indexed on 2010/06/06 0:22 UTC
Read the original article Hit count: 472

Filed under:
|
|

A contrived example:

signature A =
sig
  type t
  val x: t
end

signature B =
sig
  type t
  val y: t
end

signature C = sig include A B end

Obviously, this will cause complaints that type t occurs twice in C. But is there any way to express that I want the two ts to be equated, ending up with:

signature C =
sig
  type t
  val x: t
  val y: t
end

I tried all sorts of silly syntax like include B where type t = A.t, which unsurprisingly didn't work. Is there something I've forgotten to try?

Also, I know that this would be simply answered by checking the language's syntax for anything obvious (or a lack of), but I couldn't find a complete grammar anywhere on the internet.

(FWIW, the actual reason I'm trying to do this is Haskell-style monads and such, where a MonadPlus is just a mix of a Monad and an Alternative; at the moment I'm just repeating the contents of ALTERNATIVE in MONAD_PLUS, which strikes me as less than ideal.)

© Stack Overflow or respective owner

Related posts about include

Related posts about signature